#ifndef LCD_H
#define LCD_H

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <sys/ioctl.h>

class Lcd
{
public:
    enum Color{
       RED = 0x00ff0000, //红色
       GREEN = 0x0000ff00, //绿色
       BLACK = 0x00000000, //黑色
       WHITE = 0x00ffffff, //白色
       BLUE = 0x000000ff, //蓝色
       YELLOW = 0x00ffff00, //黄色

    };

    Lcd(const char*devName = "/dev/fb0");
    ~Lcd();

    //画一个点
    void drawPoint(int x,int y,enum Color color);
    //画一个线段
    void drawLine(int x1,int y1,int x2,int y2,enum Color color);
    //画德国国旗
    void drawBlock(enum Color bcolor1,enum Color bcolor2,enum Color bcolor3);
    /*
        函数功能：画矩形
        参数：
        返回值：
    */
    void drawRect(int startX,int startY,int drawWidth,int drawHeight,enum Color color);

    //得到液晶屏的宽度
    int width();
    //得到液晶屏的高度
    int height();
    //获取映射的内存地址
    typedef int(*addrType_t)[800];
    addrType_t addr();

    //对外接口
    static Lcd* instance();
    static void destory();
private:

    struct fb_var_screeninfo varinfo;
    int(*lcd_p)[800];
    int lcdFd;

    //液晶屏的初始化
    int _init(const char*devName);
    //液晶屏的销毁
    int _destory();

    static Lcd*m_instance;
};

#endif // LCD_H
